The EU fleet register (https://webgate.ec.europa.eu/fleet-europa/search_en) — which contains all historical records relating to fishing vessels flagged in EU Member States — was downloaded on 19 April 2021 with the following filters:
The downloaded file was then processed. The first step was to load it:
fleet <- read.csv2("Data/Raw.nosync/vesselRegistryListResults.csv", quote = "", stringsAsFactors = FALSE) #Load raw data from EU website
We then proceeded with cleaning the fleet’s data. The first step was to fix the Register’s exported file, which contained 5 rows that did not tabulate correctly:
fleet <- fleet %>%
filter(!LOA == "" & !Country.of.Registration == "\"\"") %>% #Set aside correct records
bind_rows(fleet %>% #Deal with incorrect records (duplicate rows that incorrectly tabulated)
filter(Country.of.Registration == "\"\"") %>% #Set aside first part of duplicate records
select(c(Event:Power.of.main.engine)) %>%
rename_at(vars(colnames(fleet %>% #Rename columns based on correct records
filter(Country.of.Registration == "\"\"") %>%
select(c(Event:Power.of.main.engine)))),
~ colnames(fleet %>%
select(c(IRCS.indicator:ncol(.))))) %>%
bind_cols(fleet %>% #Bind fixed duplicates with other part of duplicate records
filter(LOA == "") %>%
select(c(1:Name.of.vessel))) %>%
mutate(Place.of.registration = "",
IRCS = "",
Hull.material = as.integer(Hull.material)))
First, we selected the columns of interest and renamed them:
fleet <- fleet %>%
select(country = Country.of.Registration, #Keep columns of interest and rename them
cfr = CFR,
external_marking = External.marking,
vessel_name = Name.of.vessel,
event_start_date = Event.Start.Date,
event_end_date = Event.End.Date,
gear_code = Main.fishing.gear,
length = LOA,
power = Power.of.main.engine)
We then transformed a few columns:
fleet <- fleet %>%
mutate(across(where(is.character), str_trim), #Remove all trailing and leading whitespace
external_marking = str_remove_all(external_marking, c("\\\"|\\\r|\\\n|\\*|/UFA| ?|-?")), #Remove these patterns
external_marking = str_replace(external_marking, "^([a-zA-Z]+)(0|-)([0-9]+)$", "\\1\\3"), #Further clean external_marking
vessel_name = str_to_upper(str_replace(vessel_name, "-", " ")), #Capitalize vessel_name
vessel_name = str_replace(vessel_name, " ", " "), #Remove double spaces
event_start_date = as.Date(event_start_date, origin = "1899-12-30"), #Make dates actual dates
event_end_date = as.Date(ifelse(event_end_date == "2100-12-31", "2021-04-19", event_end_date), origin = "1899-12-30"), #Replace last records by download date and make dates actual dates
length = as.numeric(length)) %>% #Convert as numeric
distinct()
We then added a gear based on gear_code:
fleet <- fleet %>%
left_join(read_excel("Data/Raw.nosync/MDR_Gear_Type.xls") %>% #Downloaded on the European Commission's CIRCABC platform
select(gear_code = Code,
gear = EnDescription,
gear_cat = SubCategory) %>%
#Cleaning gear and gear_cat
mutate(gear = str_to_sentence(str_remove(gear, "- ")),
gear = ifelse(grepl("know", ignore.case = TRUE, gear), "Unknown gear", gear),
gear_cat = ifelse(grepl("mid", ignore.case = TRUE, gear_cat), "Pelagic trawls & seines",
ifelse(grepl("bottom", ignore.case = TRUE, gear_cat), "Bottom trawls & dredges",
ifelse(grepl("surround", ignore.case = TRUE, gear), "Pelagic trawls & seines",
ifelse(grepl("gill|trammel", ignore.case = TRUE, gear), "Entangling nets",
ifelse(grepl("long", ignore.case = TRUE, gear), "Longlines",
ifelse(grepl("line", ignore.case = TRUE, gear), "Hook & lines",
ifelse(grepl("hand|beach", ignore.case = TRUE, gear), "Other gears",
ifelse(grepl("dredge", ignore.case = TRUE, gear), "Bottom trawls & dredges",
ifelse(grepl("bottom|danish|scottish", ignore.case = TRUE, gear), "Bottom trawls & dredges",
ifelse(grepl("trawl", ignore.case = TRUE, gear), "Undet. trawls",
ifelse(grepl("pot|trap|pound|fyke|weir", ignore.case = TRUE, gear), "Pots & traps",
ifelse(grepl("purse|seine", ignore.case = TRUE, gear) & !grepl("PS", gear_code), "Pelagic trawls & seines",
ifelse(grepl("PS", ignore.case = TRUE, gear_code), "Purse seines",
ifelse(grepl("unknown", ignore.case = TRUE, gear), "Undet.", "Other gears"))))))))))))))) %>%
#Adding missing gears
add_row(gear_code = c("", "FDV", "GES", "HMS", "LVS", "NS", "SDV", "OTS", "000"),
gear = c("Unknown gear", "Free diving", "Undet. nets", "Undet. dredges", "Set vertical lines", "Unknown gear", "Undet. bottom seines", "Undet. twin trawls", "Unknown gear"),
gear_cat = c("Undet.", "Other gears", "Entangling nets ", "Bottom trawls & dredges", "Hook & lines", "Undet.", "Bottom trawls & dredges", "Undet. trawls", "Undet.")),
by = "gear_code") %>%
select(-gear_code)
Finally, we simplified the records:
fleet <- setDT(fleet)
fleet <- fleet[,.(event_start_date = min(event_start_date),
event_end_date = max(event_end_date)) ,
by = .(rleid(country, cfr, external_marking, vessel_name, gear, gear_cat, length, power),
country,
cfr,
external_marking,
vessel_name,
gear,
gear_cat,
length, power)] %>%
select(-rleid) %>%
filter(!event_end_date < "2014-01-01")
The EMFF list of beneficiaries was downloaded from the Netherlands Enterprise Agency’s (RVO) website (https://www.rvo.nl/onderwerpen/agrarisch-ondernemen/visserij-en-aquacultuur/europees-fonds-voor-maritieme-zaken-en-visserij-efmzv/openbaarmaking-efmzv-subsidies) and loaded:
emff <- read.xlsx("Data/Raw.nosync/Openbaarmaking_EFMZV_oktober_2021.xlsx")
We then selected and renamed the columns of interest:
emff <- emff %>%
select(beneficiary = Naam.van.de.begunstigde,
cfr = Community.Fleet.Registry.identificatienummer,
project_name = Naam.van.de.concrete.actie,
project_description = Samenvatting.van.de.concrete.actie,
project_start = Begindatum.van.de.concrete.actie,
project_end = Einddatum.van.de.concrete.actie,
payment_date = `Datum.subsidie-vaststellingen`,
subsidy_total = Totale.subsidiabele.uitgaven,
subsidy_eu = Bedrag.van.de.bijdrage.van.de.Unie,
zip_code = Postcode.van.de.concrete.actie,
eu_priority = Vermelding.van.de.betrokken.Unieprioriteit)
We then modified a few columns:
emff <- emff %>%
mutate(across(where(is.character), str_trim), #Remove all trailing and leading whitespace
across(contains(c("start", "end", "date")), ~as.Date(as.character(.), format = "%Y%m%d")),
eu_priority = case_when(eu_priority == "UP1" ~ "Fisheries",
eu_priority == "UP2" ~ "Aquaculture",
eu_priority == "UP3" ~ "Common Fisheries Policy",
eu_priority == "UP4" ~ "Community-led local development strategies",
eu_priority == "UP5" ~ "Marketing and processing",
eu_priority == "UP6" ~ "Integrated Maritime Policy"))
We set aside all records pertaining to COVID-19:
emff_covid <- emff %>%
filter_all(any_vars(grepl("stilliggen", ., ignore.case = TRUE) & grepl("covid", ., ignore.case = TRUE))) # 'Stilliggen' is Dutch for 'cessation'
At that stage, 269 rows out of the 502 rows of the EMFF list of beneficiaries — i.e. 53.6 % — were set aside and corresponded to COVID temporary cessation payments. In value, this 269 accounted for 6,221,600 EUR, i.e. 4.4 % of the entire EMFF allocated, and 13.6 % of Priority #1.
We then matched EMFF records with the Register:
emff_covid <- emff_covid %>%
mutate(id = 1:n()) %>%
left_join(fleet,
by = "cfr") %>%
rowwise() %>%
mutate(ndays = abs(pmax(pmin(project_end, event_end_date) - pmax(project_start, event_start_date) + 1, pmax(pmin(project_end, event_end_date) - pmax(project_start, event_start_date) + 1)))) %>% #Calculate distance between intervals. Overlap increases towards zero
with_groups(id, filter, ndays == min(ndays)) %>% #Keeps nearest or most overlapping record
select(-event_start_date, -event_end_date, -ndays) %>%
distinct()
We remove from the list of subsidized vessels, the two vessels which share the name WR226 - Jack Cornelis. Surprisingly, these two vessels (they have two different CFR based on the list of beneficiaries) have the same external marking, the same name, and also the same MMSI (based on the fleet register). Since we could not identified these two vessels, we decided to exclude them from the analysis.
emff_covid <- emff_covid %>%
filter(!external_marking == "WR226")
Following the ducth regultation n° WJZ/20087172 (https://zoek.officielebekendmakingen.nl/stcrt-2020-25324.html) giving the amount of COVID-19 temporary cessation subsidies that a vessel can perceived given its characteristics, we can calculate the number of weeks subsidized for each vessel based on the power of their main engine and the total amount of subsidy perceived.
emff_covid <- emff_covid %>%
mutate (power = as.numeric(power),
week_subsidy = ifelse(power*1.34102209 < 260, subsidy_total/2200, # 1.34102209 is the conversion factor from kW to cv
ifelse(power*1.34102209>260 & power*1.34102209<300, subsidy_total/4400,
ifelse(power*1.34102209>300, subsidy_total/8800, NA))))
We then plot the distribution of TC subsidies between vessel size class and gear
ggplot(emff_covid %>%
mutate(class_length = ifelse(length < 12, "<12 m",
ifelse(length >= 12 & length < 25, "12-25 m", #Official FranceAgriMer classification
ifelse(length >= 25 & length < 40, "25-40 m", ">40 m")))) %>%
mutate(gear = ifelse(gear %in% c("Scottish seines", "Danish seines", "Pair seines"), "Demersal seine",
ifelse(gear %in% c("Single boat bottom otter trawls", "Twin bottom otter trawls"), "Otter trawl",
ifelse(gear == "Beam trawls", "Beam trawl",
ifelse(gear == "Pots", "Pot",
ifelse(gear == "Set gillnets (anchored)", "Gillnets", gear)))))) %>%
group_by(class_length, gear) %>%
summarise(subsidy = sum(subsidy_total), subsidy = subsidy/10^6) %>%
ungroup() %>%
add_row (class_length = "<12 m", gear = "Beam trawl", subsidy = 0) %>% # we add a row for the <12 m size class, since it did not received any subsidies.
mutate(class_length = factor (class_length, levels = c("<12 m", "12-25 m", "25-40 m", ">40 m"))), aes(x=class_length, y=subsidy, fill = gear)) +
geom_col (color = "grey0") +
labs (x="Vessel length class", y ="Subsidies received for temporary cessation (million EUR)", fill = "Fishing gear", caption = "This plot includes all vessels that received subsidies for temporary\ncessation, i.e. those that landed in PEFA and those that did not.") +
theme_bw () %+%
theme(plot.caption= element_text(hjust = 0)) +
scale_fill_viridis_d ()
ggsave(last_plot(), file = "Output/Figures/Subsidies received for temporary cessation.png", width = 30, height = 15, unit = "cm")
Following the ducth regultation n° WJZ/20087172 (https://zoek.officielebekendmakingen.nl/stcrt-2020-25324.html) about the COVID-19 temporary cessation subsidies, subsidized vessels have to :
Stop their fishing activity during 7 consecutive days per subsidized week, from 12:00 a.m. on the first day to 11:59 p.m. on the seventh day.
Switch on their tracking system (AIS) during the whole temporary cessation period.
Vessels can be subsidized for up to 5 weeks, meaning they have to stop their fishing activity for 5 x 7 consecutive days and prove they stayed at the port thanks to their tracking system.
To verify that the subsidized vessels have respected these two conditions, we manually extracted on global fishing watch the fishing days as well as the days when the AIS was switched off.
# Let's load the GFW data
gfw_data <- read.xlsx("Data/Processed.nosync/GFW_data.xlsx") %>%
mutate_at(vars(c("project_start", "project_end", "fishing_start_gfw", "fishing_end_gfw", "ais_off_begin_gfw", "ais_off_end_gfw")), ~as.Date(., origin = "1899-12-30")) %>%
select (-data_acquisition, -access) %>%
mutate(fishing_period = interval(fishing_start_gfw, fishing_end_gfw)) %>%
mutate(ais_off_period = interval(ais_off_begin_gfw, ais_off_end_gfw)) %>%
select (-c("fishing_start_gfw", "fishing_end_gfw", "ais_off_begin_gfw", "ais_off_end_gfw")) %>%
pivot_longer(cols = c("fishing_period", "ais_off_period"), names_to = "action", values_to = "time_period") %>%
arrange(external_marking, time_period) %>%
filter(!is.na(time_period))
vessel_not_found <- read.xlsx("Data/Processed.nosync/GFW_data.xlsx") %>%
filter (access == "Not found") %>%
select (external_marking)
Then, we want to know which vessel switched off its AIS at least once during the temporary cessation period.
emff_covid <- emff_covid %>%
left_join(gfw_data %>%
filter(action == "ais_off_period") %>%
select (external_marking) %>%
distinct() %>%
mutate (culprit_ais_off = "TRUE"), by = "external_marking") %>%
mutate (culprit_ais_off = ifelse(is.na(culprit_ais_off) & !external_marking %in% c(vessel_not_found %>% pull ()), "FALSE", culprit_ais_off))
Among the 267 vessels that received subsidies, 202 switched off at least once their AIS during the temporary cessation period, and 50 did not switch off their AIS. The remaining 15 vessels were not found in GFW.
The following list indicates the name of the 15 vessels that received TC subsidies but that we could not find in GFW.
table(emff_covid %>%
filter (is.na(culprit_ais_off)) %>%
select(external_marking, cfr, vessel_name), "List of vessels that received TC subsidies but that we could not find in GFW")
| external_marking | cfr | vessel_name |
|---|---|---|
| IJM26 | NLD198901154 | NORD VISTA |
| UK146 | NLD197900998 | ALBERT |
| ARM14 | NLD199201712 | GRIETJE GEERTRUIDA |
| UK151 | NLD200113658 | STELLAR |
| GO57 | NLD198700139 | JOHANNA MARIA |
| WR130 | NLD199301827 | JOHANNA II |
| ZK2 | NLD199501910 | POSEIDON |
| WR40 | NLD201302074 | ANNA CAROLA |
| TH16 | NLD198302024 | HARDER |
| WR143 | NLD200102631 | FRANS NAN |
| UK124 | NLD201901165 | LUUT SENIOR |
| WR126 | NLD195300027 | VERTROUWEN |
| HK80 | NLD201045176 | SARAH |
| HK85 | NLD198300593 | IJSSELMEER |
| WR117 | NLD192901845 | JOMAR |
We remove those vessels from the following analyses.
emff_covid <- emff_covid %>%
filter (!is.na(culprit_ais_off))
In addition, we remove from the following analyses 5 vessels whose length is between 12-15 m, because according to the European Regulation 1224/2009 (https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:343:0001:0050:fr:PDF), they don’t have to own an AIS system.
emff_covid <- emff_covid %>%
filter (length >= 15)
Hence the following analyses focus on the 247 subsidized vessels that were identified on GFW and whose length is higher than 15 m.
We then calculate the fraction of the temporary cessation period during which vessels switched off their AIS.
emff_covid <- emff_covid %>%
left_join(gfw_data %>%
filter(action == "ais_off_period") %>%
mutate(ais_off_days = as.numeric(as.Date(int_end(time_period)) - as.Date(int_start(time_period))) + 1) %>% # we add one to get the two extremities of the time interval
group_by(external_marking, project_start, project_end) %>%
summarise (ais_off_days = sum(ais_off_days)) %>%
ungroup () %>%
mutate (tc_days = as.numeric(project_end - project_start) + 1,
ais_off_perc = round(ais_off_days * 100 / tc_days,1)) %>%
select(external_marking, ais_off_perc), by = "external_marking") %>%
mutate(ais_off_perc = ifelse(is.na(ais_off_perc) & !external_marking %in% c(vessel_not_found %>% pull ()), 0, ais_off_perc))
We then determine if the subsidized vessels stopped their fishing activity during 7 consecutive days per subsidized week. Since we focus on the number of days spent without fishing and with the AIS on instead of the number of days at the port, this method is conservative. Indeed, we consider a days spent at sea without fishing the same as if the vessel remained docked, whereas the ducth regultation n° WJZ/20087172 indicates that the subsidized vessel have to prove it remain docked.
The following analysis aims to look for vessels that can prove they stopped their fishing activity during 7 consecutive days per subsidized week, although their AIS was switched off intermittently.
# cessation_begin contains the number of days of the first full period spent without fishing and with the AIS switched on
cessation_begin <- gfw_data %>%
group_by(external_marking) %>%
slice(1) %>%
ungroup () %>%
mutate(cessation_days = as.numeric(as.Date(int_start(time_period)) - project_start)) %>%
select(external_marking, cessation_days)
# cessation_end contains the number of days of the last full period spent without fishing and with the AIS switched on
cessation_end <- gfw_data %>%
arrange(external_marking, desc(time_period)) %>%
group_by(external_marking) %>%
slice(1) %>%
ungroup () %>%
mutate(cessation_days = as.numeric(project_end - as.Date(int_end(time_period)))) %>%
select(external_marking, cessation_days)
# cessation_weeks contains the number of full weeks (i.e. 7 consecutive days) spent without fishing and with the AIS on.
cessation_weeks <- gfw_data %>%
mutate (cessation_days = as.numeric(as.Date(int_start(lead(time_period))) - as.Date(int_end(time_period)))-1) %>% # we calculate between each successive period, the number of days spent without fishing and with the AIS on
group_by(external_marking) %>%
slice(-n()) %>% # we remove the last row because because there is n-1 periods of time between n successive time intervals
ungroup () %>%
select(external_marking, cessation_days) %>%
bind_rows (cessation_begin) %>% # we add the number of days of the first full period spent without fishing and with the AIS switched on
bind_rows (cessation_end) %>% # we add the number of days of the last full period spent without fishing and with the AIS switched on
arrange(external_marking) %>%
mutate(cessation_weeks = floor(cessation_days/7)) %>% # we convert days into weeks. As we are only interest by full weeks (i.e., 7 consecutive days), we round to the lower integer.
group_by(external_marking) %>%
summarise(cessation_weeks = sum(cessation_weeks)) %>% # we calculate the sum of weeks spent without fishing and with the AIS on
ungroup ()
# we create a new column (culprit_seven_days_gfw) in emff_covid that indicates if vessels can prove thanks to their AIS if they have stopped their fishing activity during 7 consecutive days per subsidized week.
emff_covid <- emff_covid %>%
left_join(cessation_weeks, by = "external_marking") %>%
mutate (culprit_7days_gfw = ifelse(cessation_weeks >= week_subsidy, "FALSE", "UNKNOWN")) %>%
select(-cessation_weeks)
rm(cessation_begin, cessation_end, cessation_weeks, vessel_not_found)
Then, we focus on the number of days between each fishing period (while in the previous analysis we focused on the number of days without fishing AND with the AIS on).
Even if the AIS record is incomplete, if the number of full weeks between each fishing period is lower than the number of week subsidized, it means that the vessel did not respect the TC rule, since even in the hypothetical case where an AIS off means the vessel is docked, there is not enough full weeks between the fishing periods to exonerate the vessel.
# This chunk is similar to the previous one. The difference is that we filter gfw_data to focus only on full weeks between fishing periods (we don't take into account the AIS off periods)
# cessation_begin contains the number of days of the first full period spent without fishing
cessation_begin <- gfw_data %>%
filter (action == "fishing_period") %>%
group_by(external_marking) %>%
slice(1) %>%
ungroup () %>%
mutate(cessation_days = as.numeric(as.Date(int_start(time_period)) - project_start)) %>%
select(external_marking, cessation_days)
# cessation_end contains the number of days of the last full period spent without fishing
cessation_end <- gfw_data %>%
filter (action == "fishing_period") %>%
arrange(external_marking, desc(time_period)) %>%
group_by(external_marking) %>%
slice(1) %>%
ungroup () %>%
mutate(cessation_days = as.numeric(project_end - as.Date(int_end(time_period)))) %>%
select(external_marking, cessation_days)
# cessation_weeks contains the number of full weeks (i.e. 7 consecutive days) spent without fishing
cessation_weeks <- gfw_data %>%
filter (action == "fishing_period") %>%
mutate (cessation_days = as.numeric(as.Date(int_start(lead(time_period))) - as.Date(int_end(time_period)))-1) %>% # we calculate between each successive period, the number of days spent without fishing
group_by(external_marking) %>%
slice(-n()) %>% # we remove the last row because because there is n-1 periods of time between n successive time intervals
ungroup () %>%
select(external_marking, cessation_days) %>%
bind_rows (cessation_begin) %>% # we add the number of days of the first full period spent without fishing
bind_rows (cessation_end) %>% # we add the number of days of the last full period spent without fishing
arrange(external_marking) %>%
mutate(cessation_weeks = floor(cessation_days/7)) %>% # we convert days into weeks. As we are only interest by full weeks (i.e., 7 consecutive days), we round to the lower integer.
group_by(external_marking) %>%
summarise(cessation_weeks = sum(cessation_weeks)) %>% # we calculate the sum of weeks spent without fishing
ungroup ()
# we add the TRUE category to culprit_7days_gfw which contains the vessels we identified as culprit
emff_covid <- emff_covid %>%
left_join(cessation_weeks, by = "external_marking") %>%
mutate (culprit_7days_gfw = ifelse(cessation_weeks < week_subsidy & !is.na(cessation_weeks), "TRUE", culprit_7days_gfw)) %>%
select(-cessation_weeks)
rm(cessation_begin, cessation_end, cessation_weeks)
Data aggregated daily from the PEFA fish auctions website were loaded:
pefa <- read.xlsx("Data/Raw.nosync/data_pefa.xlsx", sheet = "TOTAL")
We then renamed the columns of interest:
pefa <- pefa %>%
select(date = Date,
external_marking = Navire,
vessel_name = Nom.du.navire,
fishing_zone = Zone.de.pêche,
fishing_days = Nombres.de.jours.en.mer,
pefa_gear = Méthode.de.pêche,
landings = Poids.total.de.poissons.débarqués)
And transformed a few columns:
pefa <- pefa %>%
mutate(across(where(is.character), str_trim)) %>% #Remove all trailing and leading whitespace
mutate(external_marking = str_remove_all(external_marking, c("\\\"|\\\r|\\\n|\\*|/UFA| ?|-?")), #Remove these patterns
external_marking = str_replace(external_marking, "^([a-zA-Z]+)(0|-)([0-9]+)$", "\\1\\3"), #Further clean external_marking
vessel_name = str_to_upper(str_replace(vessel_name, "-", " ")),
vessel_name = str_remove_all(vessel_name, c("MP ")), #Remove these patterns
date = as.Date(date, origin = "1899-12-30"),
landings = as.numeric(gsub("[^0-9]", "", landings))) %>%
filter(date > "2020-05-01") %>%
with_groups(c(external_marking, vessel_name, date, pefa_gear, fishing_days), summarise, landings = sum(landings)) %>%
filter(landings > 0)
We then joined EMFF beneficiaries for COVID-19 temporary cessation with PEFA data and cleaned vessel_name :
# we want to add the fishing gear filled out in PEFA.
pefa_gear <- emff_covid %>%
left_join(pefa %>%
mutate(match = "OK"),
by = "external_marking") %>%
filter(!is.na(match) & date %within% interval(project_start, project_end)) %>%
group_by(external_marking, pefa_gear) %>%
summarise(count =n()) %>%
ungroup() %>%
group_by(external_marking) %>%
filter (count == max(count)) %>% # if a given vessel has used different fishing gear during the TC period, we keep only the gear that was used the most
slice(1) %>%
ungroup () %>%
select (-count)
emff_covid_pefa <- emff_covid %>%
left_join(pefa %>%
mutate(match = "OK"),
by = "external_marking") %>%
filter(!is.na(match) & date %within% interval(project_start, project_end)) %>% #Keep in-scope records
select(-c("match", "pefa_gear")) %>%
left_join(pefa_gear, by="external_marking") %>%
mutate(comment = ifelse(vessel_name.x == vessel_name.y, "Same name", NA),
comment = ifelse(is.na(comment) & stringdist(vessel_name.x, vessel_name.y) <= 6, "Spelling mistake", comment),
source = case_when(external_marking == "ARM44" ~ "ttps://www.shipdata.nl/index.php?mode=shipthumb&Schip=10",
external_marking == "ARM7" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=2",
external_marking == "LO28" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=15822",
external_marking == "ST4" ~ "NL vessel from EMFF = https://www.shipdata.nl/index.php?mode=shipthumb&Schip=17268",
external_marking == "TS2" ~ "NL vessel from EMFF = https://www.shipdata.nl/index.php?mode=shipthumb&Schip=15791",
external_marking == "TX1" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=12232",
external_marking == "TX21" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=17645",
external_marking == "TX3" ~ "https://zoeken-mijn.s-bb.nl/Home/Details?leerbedrijfId=100373808",
external_marking == "WR18" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=521",
external_marking == "WR22" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=15783",
external_marking == "WR23" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=10946",
external_marking == "UK171" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=18821",
external_marking == "TX33" ~ "Old vessel name = https://www.shipdata.nl/index.php?mode=shipthumb&Schip=12696",
external_marking == "UK225" ~ "Old vessel name = https://www.shipdata.nl/index.php?mode=shipthumb&Schip=87",
external_marking == "HD32" ~ "https://www.shipdata.nl/index.php?mode=shipthumb&Schip=18307"),
comment = ifelse(grepl("[a-zA-Z]+", source) & !grepl("NL vessel", source) & !grepl("Old vessel name", source), "Matching owner",
ifelse(grepl("NL vessel", source), "Incorrect match",
ifelse(grepl("Old vessel name", source), "Matching old vessel name", comment))),
source = ifelse(comment %in% c("Same name", "Spelling mistake"), "-", source)) %>%
rename(vessel_name = vessel_name.x) %>%
select(-vessel_name.y, - culprit_ais_off, -ais_off_perc, -culprit_7days_gfw) %>%
filter(!(is.na(comment) | comment == "Incorrect match")) %>%
group_by(external_marking, date) %>% # for 6 external_marking/date combinations, we have duplicated lines because there are different numbers of fishing days. In these cases, we calculate the sum of landings, and keep only the maximum number of days spent at sea.
mutate(landings = sum(landings),
fishing_days = max(fishing_days)) %>%
ungroup () %>%
distinct ()
rm(pefa_gear)
At this step, 87 out of the 247 vessels that received subsidies for temporary cessation landed at least once in PEFA.
For these vessels, we estimate the number of full weeks (i.e. 7 consecutive days) spent without fishing based on the landing dates and the number of fishing days filled out in PEFA, for the whole temporary cessation period. It allows to determine if the vessels that landed in PEFA effectively stayed at the port during the number of weeks they were subsidized. Compare to GFW data, this is a complementary approach based on independent data to determine if subsidized vessels have respected the TC rules.
# cessation_begin contains the number of days spent without fishing between the beginning of the project and the first fishing period
cessation_begin <- emff_covid_pefa %>%
arrange(external_marking,date) %>%
group_by(external_marking) %>%
slice(1) %>% # we select the first landing date for each vessel
ungroup () %>%
mutate(fishing_start = date - fishing_days) %>% # we take into account the number of days at sea before the first landing date to determine when fishing began.
mutate(cessation_days = fishing_start - project_start) %>%
mutate(cessation_days = ifelse(cessation_days < 0, 0, cessation_days)) %>% # sometimes vessels were fishing at the starting date of the project, hence cessation_days is negative and we consider that the number of days without fishing is equal to zero.
select(external_marking, cessation_days)
# cessation_end contains the number of days spent without fishing between the end of the project and the last fishing period
cessation_end <- emff_covid_pefa %>%
arrange(external_marking, desc(date)) %>% # we select the last landing date for each vessel
group_by(external_marking) %>%
slice(1) %>%
ungroup () %>%
mutate(cessation_days = as.numeric(project_end - date + 1)) %>% # we calculate the number of days without fishing between the last fishing period and and the end of the project. We add 1 to take into account the ending day of the TC period.
select(external_marking, cessation_days)
# culprits_real contains the list of the culprit vessels based on this semi-conservative method that take into account the number of days during which vessel were fishing
emff_covid <- emff_covid %>%
left_join(emff_covid_pefa %>%
select(external_marking, date, fishing_days) %>%
arrange(external_marking, date) %>%
mutate(fishing_period = interval(date - fishing_days, date - 1)) %>% # fishing period corresponds to the interval of time during which vessels were fishing during temporary cessation. We consider the landing day not to be a fishing day.
mutate (cessation_days = as.numeric(as.Date(int_start(lead(fishing_period))) - as.Date(int_end(fishing_period))) - 1) %>% # we calculate between each successive fishing period the number of days spent without fishing.
mutate (cessation_days = ifelse(cessation_days <0, 0, cessation_days)) %>% # some fishing periods overlaps, hence the number of days spent without fishing is obviously equal to zero.
group_by(external_marking) %>%
slice(-n()) %>% # we remove the last row because for n fishing periods, there is n-1 period of time without fishing
ungroup () %>%
select(external_marking, cessation_days) %>%
bind_rows (cessation_begin) %>% # we add the the number of days spent without fishing between the beginning of the project and the first fishing period
bind_rows (cessation_end) %>% # we add the number of days spent without fishing between the last fishing period and the end of the project
arrange(external_marking) %>%
mutate(cessation_weeks = floor(cessation_days/7)) %>% # we convert days into weeks. As we are only interest by full weeks (i.e., 7 consecutive days), we round to the lower integer.
group_by(external_marking) %>%
summarise(cessation_weeks = sum(cessation_weeks)) %>% # we calculate the sum of full weeks spent without fishing.
ungroup (), by = "external_marking") %>% # we merge these data with the full list of beneficiaries (emff_covid) to compare the number of week subsidized (i.e. hence the number of weeks during which a given vessel have to stay at the port) with the number of weeks effectively spent by the vessel without fishing.
mutate (culprit_7days_pefa = ifelse(cessation_weeks < week_subsidy, "TRUE", "UNKNOWN")) %>%# we create a new column indicating if the vessels that landed in PEFA stopped their fishing activity following TC rules.
select(-cessation_weeks)
rm(cessation_begin, cessation_end)
Based on PEFA data, we found 28 culprit vessels that did not respect the “no fishing during 7 consecutive days per week subsidized” rule.
Taking into account both GFW and PEFA data, we determine if a vessel respected the “no fishing during 7 consecutive days per week subsidized” rule. We create three categories : the vessels that did not respect the rule, the vessels that did respect the rule, and the vessels for which we don’t know based on our data.
culprit <- emff_covid %>%
filter ((culprit_ais_off == "TRUE" & culprit_7days_gfw == "UNKNOWN" & culprit_7days_pefa == "TRUE") |
(culprit_ais_off == "TRUE" & culprit_7days_gfw == "TRUE" & culprit_7days_pefa == "UNKNOWN") |
(culprit_ais_off == "TRUE" & culprit_7days_gfw == "TRUE" & is.na(culprit_7days_pefa)) |
(culprit_ais_off == "FALSE" & culprit_7days_gfw == "TRUE" & is.na(culprit_7days_pefa)) |
(culprit_ais_off == "FALSE" & culprit_7days_gfw == "TRUE" & culprit_7days_pefa == "UNKNOWN") |
(culprit_ais_off == "TRUE" & culprit_7days_gfw == "TRUE" & culprit_7days_pefa == "TRUE")) %>%
select (external_marking)
not_culprit <- emff_covid %>%
filter ((culprit_ais_off == "TRUE" & culprit_7days_gfw == "FALSE" & is.na(culprit_7days_pefa)) |
(culprit_ais_off == "FALSE" & culprit_7days_gfw == "FALSE" & culprit_7days_pefa == "UNKNOWN") |
(culprit_ais_off == "FALSE" & culprit_7days_gfw == "FALSE" & is.na(culprit_7days_pefa)) |
(culprit_ais_off == "TRUE" & culprit_7days_gfw == "FALSE" & culprit_7days_pefa == "UNKNOWN")) %>%
select (external_marking)
we_dont_know <- emff_covid %>%
filter ((culprit_ais_off == "TRUE" & culprit_7days_gfw == "UNKNOWN" & culprit_7days_pefa == "UNKNOWN") |
(is.na(culprit_ais_off) & is.na(culprit_7days_gfw) & is.na(culprit_7days_pefa)) |
(culprit_ais_off == "TRUE" & culprit_7days_gfw == "UNKNOWN" & is.na(culprit_7days_pefa)) |
(culprit_ais_off == "TRUE" & culprit_7days_gfw == "FALSE" & culprit_7days_pefa == "TRUE") |
(is.na(culprit_ais_off) & is.na(culprit_7days_gfw) & culprit_7days_pefa == "UNKNOWN")) %>%
select (external_marking)
We create a new column indicating whether the vessels have respected the “no fishing during 7 consecutive days per week subsidized” rule based on the GFW and PEFA dataset.
emff_covid <- emff_covid %>%
left_join(culprit %>%
mutate(culprit_7days_gfw_pefa = "TRUE") %>%
bind_rows(not_culprit %>%
mutate(culprit_7days_gfw_pefa = "FALSE")) %>%
bind_rows(we_dont_know %>%
mutate(culprit_7days_gfw_pefa = "UNKNOWN")), by = "external_marking")
rm(culprit, not_culprit, we_dont_know)
# we then create a new column indicating if the subsidized vessels once practiced electric fishing
emff_covid <- emff_covid %>%
left_join(read.xlsx("Data/Processed.nosync/list of electric trawlers.xlsx") %>%
select ("Ext.Mark") %>%
rename(external_marking = Ext.Mark) %>%
mutate (external_marking = gsub(" ","",external_marking),
external_marking =str_replace(external_marking, "^([a-zA-Z]+)(0|-)([0-9]+)$", "\\1\\3"),
electric_fishing = "YES"), by = "external_marking") %>%
mutate(electric_fishing = ifelse(is.na(electric_fishing), "NO", electric_fishing))
Out of the 247 subsidized and identified vessels, only 13 vessels have remained within the framework of the law by having respected i) the obligation to keep the AIS on over the entire period covered by the temporary shutdowns and ii) to stop any fishing activities during 7 consecutive days per week subsidized. These vessels received 242,000 euros out of the 5,845,400 euros allocated to temporary cessations. 36 vessels respected the obligation to keep the AIS on but did not stop their fishing activities during 7 consecutive days per week subsidized.
198 vessels switched at least once their AIS. Among them, 29 stopped their fishing activities during 7 consecutive days per week subsidized. 101 did not stop their fishing activities during 7 consecutive days per week subsidized. This was highlighted thanks to GFW and/or PEFA data. And for 68 vessels, we cannot conclude whether they stopped their fishing activities or not.
The following table shows the 13 vessels that have remained within the framework of the law by having respected i) the obligation to keep the AIS on over the entire period covered by the temporary shutdowns and ii) to stop any fishing activities during 7 consecutive days per week subsidized.
| External marking | Vessel name | CFR | Number of weeks subsidized | Amount of subsidy (EUR) | Fishing gear | Length (m) | Fraction of time spent with AIS off | Once fished with electricity |
|---|---|---|---|---|---|---|---|---|
| TX42 | RES NOVA | NLD200302687 | 5 | 11000 | Beam trawls | 19.99 | 0 | NO |
| UK135 | SJOERD HENDRIKJE | NLD201901174 | 2 | 17600 | Single boat bottom otter trawls | 24.98 | 0 | NO |
| UK149 | STELLA MARIS | NLD199301848 | 2 | 17600 | Beam trawls | 42.00 | 0 | YES |
| UK156 | POOLSTER | NLD195500619 | 5 | 22000 | Beam trawls | 22.99 | 0 | NO |
| UQ6 | DINA | NLD199301897 | 5 | 11000 | Beam trawls | 18.44 | 0 | NO |
| WON77 | WIETSKE | NLD196100590 | 4 | 8800 | Beam trawls | 19.12 | 0 | NO |
| WR213 | TINI SIMONE | NLD199201667 | 5 | 22000 | Beam trawls | 22.72 | 0 | NO |
| WR222 | ANNA TATJANA | NLD195800747 | 5 | 22000 | Beam trawls | 23.86 | 0 | NO |
| WR27 | VISAREND | BEL001191970 | 5 | 22000 | Beam trawls | 22.55 | 0 | NO |
| ZK12 | PIETER DION | NLD196900552 | 5 | 22000 | Beam trawls | 21.54 | 0 | NO |
| ZK43 | BORNRIF | NLD200202652 | 5 | 22000 | Beam trawls | 21.77 | 0 | NO |
| ZK8 | HUNSINGO | NLD195900443 | 5 | 22000 | Beam trawls | 19.75 | 0 | NO |
| ZK80 | LINQUENDA | NLD196200324 | 5 | 22000 | Beam trawls | 24.89 | 0 | NO |
The following table shows the 36 vessels that have respected the obligation to keep the AIS on but did not stop their fishing activities during 7 consecutive days per week subsidized.
| External marking | Vessel name | CFR | Number of weeks subsidized | Amount of subsidy (EUR) | Fishing gear | Length (m) | Fraction of time spent with AIS off | Once fished with electricity |
|---|---|---|---|---|---|---|---|---|
| ARM46 | CORNELIA ADRIANA | NLD198600295 | 4 | 17600 | Beam trawls | 25.00 | 0 | YES |
| HA13 | NIJSSIEN | NLD200602002 | 5 | 22000 | Beam trawls | 21.98 | 0 | NO |
| KG18 | LADEBOMADO | NLD194900766 | 5 | 22000 | Beam trawls | 19.00 | 0 | NO |
| LO5 | EELTJE JAN | NLD192700221 | 5 | 11000 | Beam trawls | 18.76 | 0 | NO |
| ST25 | ELLY MARIJE | NLD198700337 | 5 | 22000 | Beam trawls | 19.81 | 0 | NO |
| TS6 | ARYANNE | NLD198800356 | 5 | 22000 | Beam trawls | 18.99 | 0 | NO |
| TS9 | TRIX | NLD195800368 | 5 | 11000 | Beam trawls | 19.00 | 0 | NO |
| TX21 | PIETER VAN ARIS | NLD200302661 | 5 | 22000 | Beam trawls | 19.96 | 0 | NO |
| TX27 | NOVA CURA | NLD200102639 | 4 | 17600 | Beam trawls | 22.74 | 0 | NO |
| TX65 | BONA FIDE | NLD201871991 | 3 | 13200 | Beam trawls | 23.86 | 0 | YES |
| UK155 | FRIENDSHIP | NLD198801104 | 5 | 22000 | Set gillnets (anchored) | 20.95 | 0 | NO |
| UK162 | GERRIT SENIOR | NLD195100539 | 5 | 22000 | Beam trawls | 23.12 | 0 | NO |
| UK168 | KEES KORF | NLD196300615 | 5 | 22000 | Beam trawls | 24.60 | 0 | NO |
| UK179 | ONDERNEMING | NLD196500428 | 5 | 22000 | Beam trawls | 25.20 | 0 | NO |
| UK225 | AUKE SENIOR | NLD201901148 | 4 | 35200 | Single boat bottom otter trawls | 30.15 | 0 | NO |
| UK271 | ESTER JACOBA | BEL035541964 | 5 | 22000 | Beam trawls | 22.25 | 0 | NO |
| UK368 | PETRONELLA | BEL032071985 | 5 | 22000 | Beam trawls | 23.77 | 0 | NO |
| UK71 | KOBUS POST | NLD198200283 | 5 | 22000 | Beam trawls | 21.70 | 0 | NO |
| UQ15 | CAROLINE ELISE | NLD200102629 | 5 | 22000 | Beam trawls | 19.99 | 0 | NO |
| UQ17 | MARTHA FREDERIKA | NLD198800567 | 5 | 22000 | Beam trawls | 20.25 | 0 | NO |
| VLI27 | JEANET MAARTJE | NLD199101723 | 3 | 13200 | Beam trawls | 23.97 | 0 | YES |
| WL20 | PIETER KEES | NLD200002604 | 5 | 22000 | Beam trawls | 19.99 | 0 | NO |
| WL33 | WILLEM ANNE | DEU200650219 | 5 | 22000 | Beam trawls | 20.25 | 0 | NO |
| WR12 | EMMA | NLD201840080 | 5 | 22000 | Beam trawls | 23.99 | 0 | NO |
| WR122 | ANNE NOËLLE | NLD196200686 | 5 | 22000 | Beam trawls | 24.66 | 0 | NO |
| WR14 | JOOST | NLD194500918 | 5 | 22000 | Single boat bottom otter trawls | 21.41 | 0 | NO |
| WR181 | ELISABETH | NLD200002614 | 5 | 22000 | Beam trawls | 23.73 | 0 | NO |
| WR21 | JENTE | NLD198200016 | 5 | 22000 | Beam trawls | 23.92 | 0 | NO |
| WR230 | GIDEON | NLD196700023 | 5 | 22000 | Beam trawls | 22.50 | 0 | NO |
| WR291 | ESTHER JENKE | NLD196300652 | 5 | 22000 | Beam trawls | 21.06 | 0 | NO |
| WR57 | JACOBA | NLD198901099 | 4 | 17600 | Beam trawls | 23.85 | 0 | NO |
| YE63 | KIEK UUT | NLD198300580 | 5 | 22000 | Beam trawls | 20.55 | 0 | NO |
| ZK17 | JOHANNES DIRK | NLD195800596 | 5 | 22000 | Beam trawls | 17.74 | 0 | NO |
| ZK44 | VIER GEBROEDERS | NLD200002602 | 5 | 22000 | Beam trawls | 22.50 | 0 | NO |
| ZK49 | TWEE GEBROEDERS | NLD196300331 | 5 | 22000 | Beam trawls | 21.06 | 0 | NO |
| ZK5 | KLAAS SR. | NLD201772022 | 4 | 17600 | Beam trawls | 19.98 | 0 | NO |
The following table shows the 29 vessels that switched off their AIS but were able to prove they have stopped their fishing activities for seven consecutive days per week subsidized.
| External marking | Vessel name | CFR | Number of weeks subsidized | Amount of subsidy (EUR) | Fishing gear | Length (m) | Fraction of time spent with AIS off | Once fished with electricity |
|---|---|---|---|---|---|---|---|---|
| ARM20 | GEERTRUID ADRIANA | NLD200302691 | 3 | 26400 | Beam trawls | 42.37 | 10.3 | YES |
| ARM7 | JAN SENIOR | NLD198700003 | 5 | 44000 | Beam trawls | 45.68 | 21.8 | YES |
| BR10 | JOHANNA | NLD196700012 | 5 | 22000 | Beam trawls | 18.56 | 0.9 | NO |
| GO48 | CORNELIS SENIOR | NLD199201770 | 3 | 26400 | Beam trawls | 40.14 | 21.2 | YES |
| HA4 | TINA | NLD192800266 | 4 | 17600 | Beam trawls | 23.50 | 51.5 | NO |
| HD27 | ZUIDERHAAKS | NLD199201803 | 2 | 17600 | Beam trawls | 41.99 | 34.6 | NO |
| HD30 | FORTUNA | NLD200302657 | 3 | 13200 | Beam trawls | 26.64 | 11.3 | NO |
| HK82 | JAN | NLD197900574 | 5 | 11000 | Beam trawls | 18.20 | 21.2 | NO |
| KW72 | TINA ADRIANA | NLD198801013 | 5 | 22000 | Beam trawls | 19.53 | 62.1 | NO |
| LO20 | ZWARTE AREND | NLD198700241 | 5 | 11000 | Beam trawls | 19.60 | 2.5 | NO |
| LO28 | MARE FRISICUM | DEU401110101 | 2 | 8800 | Single boat bottom otter trawls | 23.98 | 6.4 | NO |
| LO7 | ZWERVER | BEL044021963 | 5 | 22000 | Beam trawls | 23.78 | 6.7 | NO |
| SL42 | JAN CORNELIS III | NLD199201710 | 2 | 17600 | Beam trawls | 41.99 | 73.5 | YES |
| TH5 | ADRIANA MAATJE | NLD198500414 | 3 | 13200 | Beam trawls | 22.97 | 6.7 | NO |
| UK148 | LUNAR | NLD199702134 | 1 | 8800 | Single boat bottom otter trawls | 42.36 | 10.1 | NO |
| UK236 | DEO VOLENTE | NLD198400288 | 5 | 22000 | Single boat bottom otter trawls | 24.44 | 38.1 | NO |
| UK242 | KLEINE JAN | NLD196901896 | 4 | 35200 | Single boat bottom otter trawls | 29.20 | 5.8 | NO |
| UK64 | MATTANJA | NLD200302694 | 2 | 17600 | Beam trawls | 39.67 | 2.5 | NO |
| UK95 | AART MAASKANT | NLD199301890 | 4 | 35200 | Beam trawls | 42.36 | 9.3 | YES |
| WL15 | MONTE TJERK | NLD192400512 | 5 | 22000 | Beam trawls | 20.53 | 18.6 | NO |
| WR129 | JACOB MARCEL | NLD196300697 | 5 | 22000 | Beam trawls | 24.30 | 6.6 | NO |
| WR15 | CORNELIS JOHANNES | NLD196100679 | 4 | 8800 | Beam trawls | 18.14 | 13.4 | NO |
| WR67 | MAARTJE | NLD196800728 | 5 | 44000 | Twin bottom otter trawls | 30.95 | 15.5 | NO |
| WR88 | FIDES MAREM | NLD196200805 | 5 | 22000 | Beam trawls | 21.25 | 7.9 | NO |
| YE6 | NOOR CATHARINA | DEU401340101 | 1 | 4400 | Beam trawls | 19.96 | 30.6 | NO |
| ZK20 | LAUWERSZEE | NLD198400160 | 5 | 11000 | Beam trawls | 18.10 | 25.0 | NO |
| ZK21 | ANNA | NLD196200744 | 5 | 22000 | Beam trawls | 21.96 | 8.5 | NO |
| ZK47 | PIETER JOHANNES | NLD196100018 | 5 | 22000 | Beam trawls | 20.61 | 8.1 | NO |
| ZK92 | JOSIENA LISA | NLD198400589 | 5 | 22000 | Beam trawls | 23.20 | 3.5 | NO |
The following table shows the 101 vessels that switched off their AIS and did not stop their fishing activities during 7 consecutive days per week subsidized.
| External marking | Vessel name | CFR | Number of weeks subsidized | Amount of subsidy (EUR) | Fishing gear | Length (m) | Fraction of time spent with AIS off | Once fished with electricity |
|---|---|---|---|---|---|---|---|---|
| ARM18 | JORIS SENIOR | NLD199201721 | 5 | 44000 | Beam trawls | 45.98 | 33.0 | YES |
| EH15 | GERRIT SENIOR | NLD196000230 | 5 | 11000 | Beam trawls | 20.19 | 30.8 | NO |
| GO20 | MARIA | NLD198800086 | 5 | 44000 | Beam trawls | 39.45 | 47.8 | YES |
| GO22 | JAN CORNELIS | NLD200602662 | 1 | 8800 | Beam trawls | 41.05 | 25.4 | YES |
| GO26 | AREND JAN | NLD200202640 | 3 | 26400 | Beam trawls | 42.37 | 16.9 | YES |
| GO37 | EBEN HAËZER | NLD200002596 | 1 | 8800 | Beam trawls | 40.72 | 34.6 | YES |
| GO38 | DE VERTROUWEN | NLD200202651 | 5 | 44000 | Beam trawls | 42.37 | 55.1 | YES |
| GO44 | QUO VADIS | NLD199001042 | 5 | 44000 | Beam trawls | 39.02 | 34.4 | YES |
| GO5 | ORA ET LABORA | NLD200302680 | 5 | 44000 | Beam trawls | 42.37 | 28.3 | YES |
| GO58 | JAKORIWI | NLD198400140 | 5 | 22000 | Beam trawls | 22.37 | 29.1 | NO |
| HA40 | SIMONA | NLD194700424 | 5 | 11000 | Beam trawls | 21.90 | 55.6 | NO |
| HA41 | ANTJE | NLD198900417 | 5 | 22000 | Beam trawls | 20.20 | 53.4 | NO |
| HA43 | DE VROUWE ELISABETH | NLD196400449 | 5 | 22000 | Beam trawls | 22.90 | 1.5 | NO |
| HD36 | VOLHARDING | DEU401170101 | 3 | 26400 | Single boat bottom otter trawls | 26.47 | 13.9 | NO |
| HD5 | ALBERTINA WILLEMINA | NLD195400969 | 5 | 22000 | Beam trawls | 19.55 | 55.7 | NO |
| HK81 | HANNAH | NLD198500597 | 5 | 22000 | Beam trawls | 19.45 | 56.6 | NO |
| KW14 | JOLISSA | NLD200402702 | 2 | 17600 | Beam trawls | 41.05 | 44.2 | NO |
| KW145 | CATHARINA | NLD200602669 | 5 | 44000 | Beam trawls | 41.25 | 50.0 | YES |
| KW34 | ROSEMARIE | NLD199702084 | 4 | 35200 | Beam trawls | 42.36 | 45.5 | YES |
| KW36 | MARGRIET | NLD200402698 | 4 | 35200 | Beam trawls | 40.72 | 50.8 | NO |
| KW5 | LEENDERT DE MOL | NLD200002611 | 4 | 17600 | Beam trawls | 23.97 | 15.6 | YES |
| KW88 | PELIKAAN | NLD199802200 | 5 | 44000 | Beam trawls | 42.40 | 100.0 | YES |
| LO17 | LIQUENDA | NLD189900729 | 5 | 22000 | Beam trawls | 22.04 | 14.7 | NO |
| LO8 | TRIJNTJE | NLD199501939 | 2 | 8800 | Beam trawls | 22.06 | 7.4 | NO |
| MDV2 | METANOIA | NLD201801162 | 4 | 35200 | Single boat bottom otter trawls | 30.15 | 4.2 | NO |
| OD6 | ZELDEN RUST | NLD198700281 | 5 | 44000 | Beam trawls | 37.99 | 74.3 | YES |
| OL12 | DRIE GEBROEDERS | NLD196600694 | 5 | 22000 | Beam trawls | 19.15 | 42.2 | NO |
| OL2 | DE VOLHARDING OL2 | NLD198400643 | 3 | 6600 | Beam trawls | 17.88 | 26.9 | NO |
| OL5 | JACOB SR. | BEL000071985 | 5 | 22000 | Beam trawls | 19.10 | 78.9 | NO |
| SCH10 | DRIE GEBROEDERS | NLD196800184 | 5 | 22000 | Beam trawls | 22.47 | 6.0 | NO |
| SL2 | ARENTJE | NLD196100809 | 5 | 22000 | Beam trawls | 20.80 | 2.0 | NO |
| SL27 | JOHANNES | NLD198700088 | 3 | 26400 | Scottish seines | 35.79 | 37.3 | NO |
| ST20 | AUKE SENIOR | NLD199001086 | 5 | 11000 | Beam trawls | 21.99 | 27.0 | NO |
| ST22 | PEKE SR. | NLD200002578 | 5 | 22000 | Beam trawls | 19.99 | 22.3 | NO |
| ST24 | MARIA JOSEFINA | NLD198900701 | 5 | 22000 | Beam trawls | 20.03 | 4.5 | YES |
| ST27 | VANQUISH | NLD196600791 | 5 | 11000 | Beam trawls | 20.68 | 43.8 | NO |
| ST4 | HARMEN SENIOR | NLD199001095 | 5 | 22000 | Beam trawls | 20.57 | 12.1 | NO |
| TH6 | JOHANNA CORNELIA | NLD198100422 | 5 | 22000 | Beam trawls | 23.95 | 15.2 | YES |
| TS2 | SVEN | NLD198800457 | 5 | 22000 | Beam trawls | 20.15 | 47.4 | NO |
| TX14 | GRIETJE | NLD199201675 | 3 | 26400 | Beam trawls | 40.90 | 26.1 | NO |
| TX19 | ELISABETH CHRISTINA | NLD200302695 | 2 | 17600 | Beam trawls | 42.58 | 40.2 | YES |
| TX29 | HELENA ELIZABETH | NLD198500146 | 5 | 44000 | Beam trawls | 40.40 | 34.8 | NO |
| TX33 | NOVA SPES | BEL040521984 | 5 | 22000 | Beam trawls | 23.90 | 56.3 | NO |
| TX34 | SOLA GRATIA | NLD200002617 | 5 | 22000 | Beam trawls | 21.15 | 9.3 | NO |
| TX94 | AVONTUUR | NLD199301725 | 2 | 17600 | Beam trawls | 40.00 | 28.6 | YES |
| UK1 | ALBERT | NLD198800426 | 3 | 26400 | Beam trawls | 42.70 | 42.1 | YES |
| UK112 | WILHELMINA | NLD200601985 | 2 | 17600 | Scottish seines | 28.30 | 26.1 | NO |
| UK12 | HOOP OP ZEGEN | NLD195500639 | 5 | 22000 | Beam trawls | 21.90 | 31.0 | NO |
| UK123 | ORA ET LABORA | NLD196400575 | 5 | 22000 | Beam trawls | 19.03 | 46.2 | NO |
| UK129 | JOHANNES | NLD196800029 | 5 | 22000 | Beam trawls | 21.58 | 59.8 | NO |
| UK147 | MORGENSTER | NLD199902559 | 3 | 26400 | Beam trawls | 42.35 | 23.3 | NO |
| UK16 | ORION | NLD198500400 | 5 | 22000 | Beam trawls | 22.37 | 0.6 | NO |
| UK166 | LIMANDA | NLD195700691 | 5 | 22000 | Beam trawls | 23.63 | 5.9 | NO |
| UK171 | SPES SALUTIS | NLD196300716 | 5 | 22000 | Twin bottom otter trawls | 23.46 | 8.9 | NO |
| UK19 | MARJA NETTY | NLD198200558 | 5 | 44000 | Beam trawls | 39.55 | 38.8 | YES |
| UK197 | NOORDERLICHT | NLD199301821 | 3 | 26400 | Beam trawls | 40.90 | 18.2 | YES |
| UK200 | HENDRIK SR | NLD201302056 | 3 | 13200 | Twin bottom otter trawls | 22.65 | 1.0 | NO |
| UK268 | JACOBA ALIJDA | DNK000018558 | 5 | 44000 | Twin bottom otter trawls | 25.92 | 21.5 | NO |
| UK382 | JANSSIEN | NLD199401870 | 3 | 26400 | Beam trawls | 41.80 | 5.8 | NO |
| UK45 | JACOB WILLEMINA | NLD198700579 | 3 | 26400 | Beam trawls | 40.20 | 27.3 | YES |
| UK46 | WILLEKE | NLD201740074 | 3 | 26400 | Beam trawls | 41.05 | 3.0 | NO |
| UK5 | VANTAGE | DEU000060400 | 5 | 44000 | Beam trawls | 31.65 | 21.9 | NO |
| UK56 | JOHANNA MARIA | NLD198300028 | 5 | 44000 | Beam trawls | 40.20 | 21.4 | NO |
| UK642 | BERENDINA | DNK000040071 | 5 | 44000 | Danish seines | 27.12 | 30.3 | NO |
| UK77 | ALBERT | NLD196000787 | 4 | 8800 | Beam trawls | 19.14 | 15.7 | NO |
| UK94 | JAN VAN CEES | BEL034301957 | 5 | 22000 | Beam trawls | 19.75 | 8.7 | NO |
| WL18 | VRIJHEID | BEL010821987 | 5 | 22000 | Beam trawls | 20.86 | 48.8 | NO |
| WL2 | ZEESTER | NLD192700490 | 5 | 11000 | Beam trawls | 19.33 | 72.5 | NO |
| WL22 | GERDA | NLD198200578 | 5 | 11000 | Beam trawls | 21.00 | 50.5 | NO |
| WL25 | ANTJE | NLD191000444 | 5 | 11000 | Beam trawls | 19.80 | 10.0 | NO |
| WL28 | JAN HARMEN | NLD192400497 | 5 | 22000 | Beam trawls | 21.48 | 52.4 | NO |
| WL39 | MONTE SR. | NLD199001109 | 4 | 17600 | Beam trawls | 22.06 | 15.0 | NO |
| WL8 | LUBBERT SR | NLD190900074 | 5 | 22000 | Beam trawls | 23.92 | 10.4 | NO |
| WON17 | CHARLOTTE | NLD190802113 | 5 | 22000 | Beam trawls | 24.25 | 50.4 | NO |
| WON50 | BRIES | NLD199602081 | 5 | 22000 | Beam trawls | 20.41 | 58.2 | NO |
| WR106 | CELESTE KARLIJN | NLD200202649 | 3 | 13200 | Beam trawls | 23.40 | 9.7 | NO |
| WR109 | BAUKJE ELISABETH | NLD200002598 | 5 | 22000 | Beam trawls | 22.69 | 2.1 | YES |
| WR111 | BREEHORN | NLD200202677 | 5 | 22000 | Beam trawls | 18.80 | 4.5 | NO |
| WR112 | ZWAANTJE | NLD196400548 | 5 | 22000 | Beam trawls | 25.45 | 54.8 | NO |
| WR123 | ANNA JOHANNA | NLD198800186 | 5 | 22000 | Beam trawls | 23.54 | 6.5 | NO |
| WR19 | ESPADA | NLD196900780 | 5 | 44000 | Beam trawls | 26.98 | 26.9 | NO |
| WR22 | JACQUELINE | NLD200302679 | 3 | 13200 | Beam trawls | 22.15 | 16.1 | NO |
| WR244 | HENK JAN | NLD198100545 | 5 | 22000 | Beam trawls | 24.45 | 0.8 | YES |
| WR289 | BONA FIDE | NLD201513666 | 3 | 13200 | Beam trawls | 23.89 | 0.7 | NO |
| WR36 | WILLEM STEFAN | NLD196000824 | 5 | 22000 | Beam trawls | 21.25 | 61.1 | NO |
| WR50 | CONCORDIA | NLD201772013 | 4 | 17600 | Single boat bottom otter trawls | 23.93 | 33.0 | NO |
| WR54 | CORNELIS NAN | NLD198400764 | 5 | 22000 | Beam trawls | 19.00 | 28.6 | NO |
| WR7 | JOHANNA | NLD198100026 | 5 | 22000 | Beam trawls | 24.45 | 10.5 | NO |
| WR72 | PAULUS HENDRIK | NLD192800423 | 4 | 8800 | Beam trawls | 23.38 | 5.0 | NO |
| WR80 | SIMON ALBERT | NLD198800495 | 5 | 22000 | Beam trawls | 23.15 | 1.1 | NO |
| WR9 | SHRIMPER | NLD198901093 | 5 | 22000 | Beam trawls | 23.95 | 35.2 | NO |
| YE76 | TOBBER | NLD198000075 | 5 | 22000 | Beam trawls | 23.85 | 38.7 | NO |
| YE88 | IDA | NLD196900982 | 5 | 22000 | Beam trawls | 22.46 | 45.0 | NO |
| ZK10 | VIJKO SR. | NLD199402001 | 5 | 22000 | Beam trawls | 21.95 | 12.9 | NO |
| ZK11 | HOOP OP ZEGEN | NLD192600587 | 5 | 11000 | Beam trawls | 20.58 | 5.7 | NO |
| ZK14 | EMMA | NLD200202647 | 5 | 22000 | Beam trawls | 23.73 | 1.0 | NO |
| ZK18 | LIBERTY | NLD199902648 | 5 | 11000 | Beam trawls | 18.80 | 27.0 | NO |
| ZK23 | SEMPER FIDELIS | NLD196300631 | 5 | 22000 | Beam trawls | 21.72 | 10.1 | NO |
| ZK37 | ALDERT VAN THIJS | NLD194600518 | 5 | 22000 | Beam trawls | 20.34 | 55.6 | NO |
| ZK46 | ZEEMEEUW | NLD198400504 | 5 | 22000 | Beam trawls | 23.95 | 2.7 | NO |
| ZK50 | ZEEVALK | NLD196700430 | 5 | 11000 | Beam trawls | 18.22 | 52.6 | NO |
The following table shows the 68 vessels that switched off their AIS but for which we cannot conclude whether they stopped their fishing activities or not.
| External marking | Vessel name | CFR | Number of weeks subsidized | Amount of subsidy (EUR) | Fishing gear | Length (m) | Fraction of time spent with AIS off | Once fished with electricity |
|---|---|---|---|---|---|---|---|---|
| ARM15 | DE VROUW JANNETJE | NLD198800009 | 4 | 35200 | Beam trawls | 45.56 | 34.6 | YES |
| ARM22 | KLAAS ADRIANA | NLD199301885 | 3 | 26400 | Beam trawls | 43.99 | 90.7 | YES |
| ARM44 | NEELTJE JANNETJE | NLD198500048 | 5 | 44000 | Beam trawls | 45.54 | 58.9 | YES |
| BR29 | EENDRACHT | NLD196700024 | 5 | 22000 | Beam trawls | 19.68 | 58.3 | NO |
| GO23 | CORNELIS JANNETJE | NLD198900070 | 4 | 35200 | Beam trawls | 39.00 | 22.9 | YES |
| GO29 | JAN MARIA | NLD197900093 | 5 | 22000 | Beam trawls | 23.22 | 50.8 | NO |
| HA11 | INEKE | NLD192700506 | 5 | 11000 | Set gillnets (anchored) | 20.00 | 80.6 | NO |
| HA31 | INNOVATIE | NLD192900389 | 5 | 22000 | Beam trawls | 23.40 | 33.8 | YES |
| HA62 | WILLEM TJITSCHE | NLD190500461 | 5 | 11000 | Beam trawls | 19.58 | 51.6 | NO |
| HD29 | MORGENSTER | NLD199201750 | 3 | 26400 | Beam trawls | 43.99 | 43.5 | YES |
| HD32 | KLAASJE | NLD196800602 | 5 | 22000 | Beam trawls | 22.47 | 5.8 | NO |
| HD4 | HENDRIK PETRONELLA | NLD199401895 | 4 | 35200 | Beam trawls | 42.90 | 53.0 | YES |
| HD42 | GRIETJE CORNELIA | NLD201872034 | 4 | 17600 | Beam trawls | 23.65 | 4.3 | NO |
| IJM8 | RONY | NLD198600031 | 3 | 13200 | Single boat bottom otter trawls | 23.50 | 19.2 | NO |
| LO13 | STORMVOGEL | NLD198800277 | 1 | 2200 | Beam trawls | 20.20 | 63.9 | NO |
| LO14 | FETSKE | NLD192100234 | 5 | 11000 | Beam trawls | 21.61 | 71.0 | NO |
| MDV1 | IMMANUEL | NLD201513651 | 5 | 44000 | Single boat bottom otter trawls | 30.15 | 2.0 | NO |
| OL37 | INSULINDE | NLD191000315 | 5 | 22000 | Beam trawls | 20.54 | 76.6 | NO |
| OL7 | HOOP OP ZEGEN | NLD198300352 | 3 | 6600 | Beam trawls | 18.64 | 92.4 | NO |
| TH10 | DIRKJE | NLD199001065 | 2 | 8800 | Twin bottom otter trawls | 23.97 | 19.0 | YES |
| TM19 | REIDERLAND | NLD192100347 | 5 | 22000 | Beam trawls | 23.02 | 70.1 | NO |
| TX1 | KLASINA J | NLD199602034 | 1 | 8800 | Beam trawls | 42.36 | 31.9 | YES |
| TX3 | BIEM JAN | NLD199902545 | 1 | 8800 | Beam trawls | 42.21 | 39.1 | YES |
| UK136 | DRAKKAR | BEL025181998 | 5 | 44000 | Beam trawls | 37.81 | 26.0 | NO |
| UK145 | TEUNIS VAN ATJE | NLD200002595 | 5 | 44000 | Pair seines | 27.10 | 22.2 | NO |
| UK150 | POLAR | NLD201740082 | 5 | 44000 | Single boat bottom otter trawls | 32.00 | 100.0 | NO |
| UK152 | SOLAR | NLD198900067 | 5 | 44000 | Beam trawls | 39.06 | 29.0 | YES |
| UK153 | LUB SENIOR | NLD201001155 | 4 | 35200 | Danish seines | 28.50 | 28.3 | NO |
| UK158 | WILLEM JACOB | NLD199101730 | 5 | 44000 | Single boat bottom otter trawls | 23.97 | 31.5 | YES |
| UK160 | RIEMDA | GBR000C19588 | 4 | 35200 | Twin bottom otter trawls | 32.90 | 52.7 | NO |
| UK161 | HENDRIK BRANDS | GBR000C16214 | 5 | 44000 | Beam trawls | 42.00 | 17.1 | NO |
| UK172 | SURSUM CORDA | NLD199101572 | 5 | 44000 | Beam trawls | 41.35 | 47.2 | YES |
| UK176 | VERWACHTING | NLD197500866 | 5 | 44000 | Beam trawls | 33.62 | 38.1 | YES |
| UK177 | CORNELIS EVERT | NLD198000872 | 5 | 44000 | Beam trawls | 30.05 | 32.6 | NO |
| UK184 | JOSEPHINA MARIA | NLD199802170 | 1 | 8800 | Beam trawls | 42.46 | 21.8 | NO |
| UK189 | GERT JAN | GBR000A18852 | 5 | 44000 | Beam trawls | 36.50 | 28.6 | NO |
| UK195 | NOORDERHAAKS | NLD199401869 | 5 | 44000 | Beam trawls | 44.03 | 29.0 | YES |
| UK2 | ADRIAANTJE | NLD199001075 | 3 | 26400 | Beam trawls | 42.45 | 30.9 | YES |
| UK205 | SPES NOVA | NLD201801159 | 3 | 26400 | Twin bottom otter trawls | 32.22 | 28.9 | NO |
| UK210 | CHRISTINA MARIA | NLD200102663 | 5 | 44000 | Twin bottom otter trawls | 22.80 | 31.6 | NO |
| UK22 | STELLA POLARIS | IRL000I11722 | 5 | 44000 | Scottish seines | 29.80 | 100.0 | NO |
| UK224 | TUNIS VAN LUUT | NLD199702111 | 1 | 8800 | Scottish seines | 33.55 | 13.0 | YES |
| UK227 | ORANJE NASSAU | NLD199301771 | 5 | 44000 | Beam trawls | 40.90 | 50.0 | YES |
| UK246 | CONCORDIA | NLD199201722 | 3 | 26400 | Beam trawls | 40.36 | 35.4 | YES |
| UK272 | ADRIAANTJE | GBR000C17393 | 5 | 44000 | Twin bottom otter trawls | 28.00 | 25.9 | NO |
| UK284 | CORNELIS ZEEMAN | NLD199201617 | 5 | 44000 | Beam trawls | 41.80 | 29.3 | YES |
| UK33 | WILLEMPJE HOEKSTRA | NLD198600627 | 4 | 35200 | Beam trawls | 40.73 | 29.6 | YES |
| UK34 | KOBUS JR | NLD199201673 | 5 | 44000 | Beam trawls | 41.35 | 12.6 | YES |
| UK37 | URSA MINOR | NLD198000455 | 5 | 44000 | Single boat bottom otter trawls | 35.34 | 28.6 | NO |
| UK44 | GRIETJE | NLD198400968 | 3 | 13200 | Single boat bottom otter trawls | 23.75 | 32.5 | NO |
| UK47 | IEDE KORNELIS | NLD199101413 | 3 | 26400 | Beam trawls | 40.92 | 59.8 | YES |
| UK80 | LINQUENDA | NLD198300871 | 5 | 22000 | Beam trawls | 24.12 | 25.3 | NO |
| UK87 | MARIA | NLD198300822 | 3 | 26400 | Beam trawls | 40.40 | 24.5 | YES |
| VD6 | BRIGITTA | BEL030381986 | 5 | 22000 | Beam trawls | 24.54 | 80.0 | NO |
| VLI25 | CINDY | NLD198800017 | 3 | 26400 | Beam trawls | 40.20 | 15.0 | YES |
| WL4 | HENDERIKA | NLD201102043 | 5 | 22000 | Beam trawls | 19.95 | 14.6 | NO |
| WR108 | STELLA MARIS | NLD198502215 | 5 | 22000 | Twin bottom otter trawls | 22.97 | 34.0 | NO |
| WR18 | IN SOLIDUM | NLD196200482 | 4 | 17600 | Beam trawls | 24.88 | 2.8 | NO |
| WR189 | GRIETJE | NLD200702007 | 5 | 22000 | Beam trawls | 23.98 | 36.1 | NO |
| WR2 | DUNJA LYNN | NLD200002621 | 5 | 22000 | Beam trawls | 21.15 | 12.0 | NO |
| WR20 | ELISABETH | NLD198500893 | 5 | 22000 | Twin bottom otter trawls | 24.44 | 29.7 | NO |
| WR23 | DE VROUW GEERTRUIDA | NLD198700629 | 5 | 22000 | Twin bottom otter trawls | 24.69 | 24.7 | NO |
| WR274 | DIRK SENIOR | NLD198500986 | 4 | 17600 | Beam trawls | 23.94 | 40.0 | NO |
| WR29 | LAURINA ARIETTA | NLD198700225 | 5 | 22000 | Beam trawls | 22.97 | 27.5 | NO |
| WR71 | MARRY AN | NLD196000768 | 5 | 22000 | Beam trawls | 19.08 | 14.4 | NO |
| WR98 | ELSE JEANNETTE | NLD196000755 | 5 | 22000 | Beam trawls | 23.70 | 80.4 | NO |
| ZK13 | BEREND CORNELIS | NLD200202656 | 5 | 22000 | Beam trawls | 23.60 | 11.5 | NO |
| ZK87 | PIETERNELLE HELENA | NLD199201655 | 5 | 22000 | Beam trawls | 23.88 | 47.3 | NO |
Bar codes are created to represent the activity (fishing days according to both PEFA and GFW, days when the AIS was switched off, landing days in PEFA auctions) of each of the 247 vessels that were subsidized. Plots are located in Output/Figures/Barcodes/.
The red unfilled rectangle indicates the temporary cessation period. The red vertical lines indicate the landing dates in PEFA auctions. The black bars correspond to the fishing days on GFW. The grey bars correspond to days when AIS was switched off on GFW. The cyan horizontal lines ontop of each figure indicate the fishing periods as filled out in PEFA.
This figure highlights that most of the vessels switch off once or many times their AIS between two consecutive landings in PEFA, which means that they switch off their AIS while fishing. Hence, some fishing days that are declared in PEFA are not visible in GFW because the AIS was switched off.
The following table shows the vessels that fished while their AIS was switched off. If during two landings in one of the PEFA auction, a given vessel had its AIS off and no fishing days recorded, it means it was fishing while its AIS was off.
| external_marking | vessel_name | cfr | group | count |
|---|---|---|---|---|
| SL27 | JOHANNES | NLD198700088 | ais off_TC culprit | 16 |
| KW36 | MARGRIET | NLD200402698 | ais off_TC culprit | 11 |
| KW88 | PELIKAAN | NLD199802200 | ais off_TC culprit | 11 |
| GO38 | DE VERTROUWEN | NLD200202651 | ais off_TC culprit | 10 |
| GO48 | CORNELIS SENIOR | NLD199201770 | ais off_ TC not culprit | 9 |
| SL42 | JAN CORNELIS III | NLD199201710 | ais off_ TC not culprit | 9 |
| UK642 | BERENDINA | DNK000040071 | ais off_TC culprit | 9 |
| WR274 | DIRK SENIOR | NLD198500986 | ais off_TC unknown | 8 |
| GO20 | MARIA | NLD198800086 | ais off_TC culprit | 7 |
| KW145 | CATHARINA | NLD200602669 | ais off_TC culprit | 6 |
| KW34 | ROSEMARIE | NLD199702084 | ais off_TC culprit | 6 |
| TX29 | HELENA ELIZABETH | NLD198500146 | ais off_TC culprit | 6 |
| TX3 | BIEM JAN | NLD199902545 | ais off_TC unknown | 5 |
| UK1 | ALBERT | NLD198800426 | ais off_TC culprit | 5 |
| ARM22 | KLAAS ADRIANA | NLD199301885 | ais off_TC unknown | 4 |
| OD6 | ZELDEN RUST | NLD198700281 | ais off_TC culprit | 4 |
| TX94 | AVONTUUR | NLD199301725 | ais off_TC culprit | 4 |
| WR108 | STELLA MARIS | NLD198502215 | ais off_TC unknown | 4 |
| WR20 | ELISABETH | NLD198500893 | ais off_TC unknown | 4 |
| GO22 | JAN CORNELIS | NLD200602662 | ais off_TC culprit | 3 |
| GO23 | CORNELIS JANNETJE | NLD198900070 | ais off_TC unknown | 3 |
| GO37 | EBEN HAËZER | NLD200002596 | ais off_TC culprit | 3 |
| GO44 | QUO VADIS | NLD199001042 | ais off_TC culprit | 3 |
| GO5 | ORA ET LABORA | NLD200302680 | ais off_TC culprit | 3 |
| KW14 | JOLISSA | NLD200402702 | ais off_TC culprit | 3 |
| UK45 | JACOB WILLEMINA | NLD198700579 | ais off_TC culprit | 3 |
| WR189 | GRIETJE | NLD200702007 | ais off_TC unknown | 3 |
| WR67 | MAARTJE | NLD196800728 | ais off_ TC not culprit | 3 |
| ARM18 | JORIS SENIOR | NLD199201721 | ais off_TC culprit | 2 |
| GO26 | AREND JAN | NLD200202640 | ais off_TC culprit | 2 |
| HA11 | INEKE | NLD192700506 | ais off_TC unknown | 2 |
| LO28 | MARE FRISICUM | DEU401110101 | ais off_ TC not culprit | 2 |
| UK112 | WILHELMINA | NLD200601985 | ais off_TC culprit | 2 |
| UK145 | TEUNIS VAN ATJE | NLD200002595 | ais off_TC unknown | 2 |
| UK224 | TUNIS VAN LUUT | NLD199702111 | ais off_TC unknown | 2 |
| WR19 | ESPADA | NLD196900780 | ais off_TC culprit | 2 |
| WR23 | DE VROUW GEERTRUIDA | NLD198700629 | ais off_TC unknown | 2 |
| ARM15 | DE VROUW JANNETJE | NLD198800009 | ais off_TC unknown | 1 |
| ARM7 | JAN SENIOR | NLD198700003 | ais off_ TC not culprit | 1 |
| HD4 | HENDRIK PETRONELLA | NLD199401895 | ais off_TC unknown | 1 |
| TH5 | ADRIANA MAATJE | NLD198500414 | ais off_ TC not culprit | 1 |
| TX1 | KLASINA J | NLD199602034 | ais off_TC unknown | 1 |
| TX14 | GRIETJE | NLD199201675 | ais off_TC culprit | 1 |
| TX19 | ELISABETH CHRISTINA | NLD200302695 | ais off_TC culprit | 1 |
| UK197 | NOORDERLICHT | NLD199301821 | ais off_TC culprit | 1 |
| UK46 | WILLEKE | NLD201740074 | ais off_TC culprit | 1 |
| UK95 | AART MAASKANT | NLD199301890 | ais off_ TC not culprit | 1 |
| WR29 | LAURINA ARIETTA | NLD198700225 | ais off_TC unknown | 1 |
We then merge the data with the name of the auction where each landing has been made.
# we extract all the date/landing combination in order to manually search of the PEFA website the corresponding auction.
write.xlsx(emff_covid_pefa %>%
select (date, external_marking) %>%
arrange(date),
"Output/Data/List of illegal landings with no auction - To be cleaned.xlsx")
emff_covid_pefa <- emff_covid_pefa %>%
left_join(read.xlsx("Data/Processed.nosync/List of illegal landings with no auction_cleaned.xlsx") %>%
mutate (date = as.Date(date, origin = "1899-12-30")), by = c("date", "external_marking"))
We then load and clean the detailed list of landings. This detailed list has been made by manually searching on the PEFA website the detailed landing data for each vessel and for each landing day.
landing_detail <- read.xlsx("Data/Processed.nosync/List of detailed landings to get.xlsx", sheet = "CAPTURES") %>%
bind_rows(read.xlsx("Data/Processed.nosync/List of detailed landings to get.xlsx", sheet = "PULS")) %>%
select (date = Date,
external_marking = vessel,
quality = Qualité,
sold = Vendu,
weight = Poids,
msc = Cert,
metadata = espèce.et.taille) %>%
mutate(date = as.Date(date, origin = "1899-12-30"),
weight = as.numeric(gsub("[^0-9]", "", weight)),
metadata = str_extract(metadata, "^.+\\d{3}\\s\\d{4}-\\d{4}\\s[A-Z]{2}")) %>%
mutate(metadata = paste0(metadata, " ", quality),
external_marking = gsub(" ","",external_marking),
external_marking = str_remove_all(external_marking, c("\\\"|\\\r|\\\n|\\*|/UFA| ?|-?")),
external_marking =str_replace(external_marking, "^([a-zA-Z]+)(0|-)([0-9]+)$", "\\1\\3"))
emff_covid_pefa <- emff_covid_pefa %>%
left_join(landing_detail, by = c("date", "external_marking"))
rm(landing_detail)
At this stage, the database contains 17398 lines with the detailed landings for all vessels that landed in PEFA auctions during their temporary cessation. For 170 vessel/landing date combination, we were not able to have the detailed list of landings, only the total weight that was landed. Out of the 17398 lines, 63 lines were duplicated. This is due to the fact that some landing operations in the detailed list were the same, i.e. a vessel could have landed the same type of fish (species, size, quality, weight, etc.) two times, which gives two exact same lines in the database.
We extract all the combinations of landing days/auctions. This list will be used to manually search on the PEFA website the market prices associated with these day/auction combinations.
write.xlsx(emff_covid_pefa %>%
select(date, auction) %>%
distinct () %>%
arrange(date),
"Output/Data/List of market prices - To be cleaned.xlsx")
After manually search on the PEFA website, we can then load the market prices.
# we load the market prices and do some cleaning of the data.
market_prices <- read.xlsx("Data/Processed.nosync/List of market prices_cleaned.xlsx") %>%
rename(price_mean = Prix.Moy., price_max = Prix.Max.) %>%
mutate (Taille = str_remove(Taille, "\\s[A-Z]+"),
metadata = paste0(Espèce, " ", Taille, " ",Info, " ",Qual.),
date = as.Date(date, format = "%d/%m/%Y"),
price_mean=str_remove(price_mean, " EUR"),
price_max = str_remove(price_max, " EUR"),
price_mean=str_replace(price_mean, ",", "."),
price_max = str_replace(price_max, ",", ".")) %>%
mutate_at(vars(c("price_mean", "price_max")), ~as.numeric(.)) %>%
select (-c(Espèce, Taille, Qual., Info, App.))
# Some rows in market_prices are duplicated for a given species/size class/quality/state, because we can have different forms of fish (e.g. for the turbot fish) which have not the same price. However, we do not have information about the forms, we can only see in our data that a given species/size class/quality/state has different prices, resulting in duplicated lines. For these duplicated lines, we calculate the mean price and keep only one record.
market_prices <- market_prices %>%
group_by(date, auction, metadata) %>%
mutate (count = n()) %>%
arrange(desc(count)) %>%
filter (count>1) %>%
mutate_at(vars(matches(c("price_mean", "price_max"))), ~mean(.)) %>%
ungroup() %>%
distinct () %>%
bind_rows(
market_prices %>%
group_by(date, auction, metadata) %>%
mutate (count = n()) %>%
arrange(desc(count)) %>%
filter (count == 1) %>%
ungroup ()) %>%
select (-count)
We then merge the market prices with the landing data. It will allow to calculate the turnover for each fishing vessel.
emff_covid_pefa <- emff_covid_pefa %>%
left_join(market_prices, by = c("date", "auction", "metadata"))
We simplify the gear names that come from the PEFA website (and which are more detailed than those from the fleet register).
emff_covid_pefa <- emff_covid_pefa %>%
mutate (pefa_gear_category = ifelse(pefa_gear %in% c("EUROBEAMER RFS", "A TANGON", "EUROBEAMER", "CHALUT", "TWIN TRAWLING","TWINRIG RFS", "SUMWING RFS", "SUMWING"), "Conventional bottom trawl",
ifelse(pefa_gear %in% c("PULS WING", "PULSATING TRAWL"), "Electric trawl",
ifelse (pefa_gear == "SEINE NET(F)", "Demersal seine",
ifelse(pefa_gear == "GILLNET RFS", "Net", pefa_gear))))) %>%
relocate (pefa_gear_category, .after = pefa_gear)
For 67 rows, the matching between the detailed landing and the market prices did not work. The metadata in the detailed landing could not be found in the market prices. In this case we search the species in the market prices without taking into account the whole metadata (size, quality, etc.). If there is more than one row associated with the species in the market prices, we calculate the mean price for this species.
emff_covid_pefa <- emff_covid_pefa %>%
filter (!(!is.na(metadata) & is.na(price_mean))) %>%
bind_rows(emff_covid_pefa %>%
filter (!is.na(metadata) & is.na(price_mean)) %>%
mutate(species = str_extract(metadata, "[A-Z]+(\\s[A-Z]+)?")) %>%
left_join(market_prices %>%
mutate(metadata = str_extract(metadata, "[A-Z]+(\\s[A-Z]+)?")) %>%
rename (species = metadata) %>%
group_by(date, auction, species) %>%
summarise (price_mean = mean(price_mean),
price_max = mean(price_max)), by = c("date", "auction", "species")) %>%
rename (price_mean = price_mean.y, price_max = price_max.y) %>%
select (-price_mean.x, -price_max.x, -species))
At this stage, there is 35 out of the 17228 detailed landings that did not match with the market prices register because, for unknown reasons, the species that was sold for a given day/auction was not registered in the market prices.
We then calculate for each landing (i.e. line of the dataset) the turnover. We then merge the dataset with a list of vessels that have practiced electric fishing in the past. This list can be found in the following link : http://www.bloomassociation.org/en/wp-content/uploads/2020/09/beyond-illegal-annexes.pdf
emff_covid_pefa <- emff_covid_pefa %>%
mutate (price_mean_total = price_mean * weight,
price_max_total = price_max * weight) %>%
left_join(read.xlsx("Data/Processed.nosync/list of electric trawlers.xlsx") %>%
select ("Ext.Mark") %>%
rename(external_marking = Ext.Mark) %>%
mutate (external_marking = gsub(" ","",external_marking),
external_marking =str_replace(external_marking, "^([a-zA-Z]+)(0|-)([0-9]+)$", "\\1\\3"),
electric_fishing = "YES"), by = "external_marking") %>%
mutate(electric_fishing = ifelse(is.na(electric_fishing), "NO", electric_fishing))
Then, we estimate the turnover for the incomplete landings, i.e. those for which we do not have the detail of the species fished, but only the the total weight landed. To do this, we compare these incomplete landings with the the detailed landings for which fishes were fished by the same type of vessels and which were landed in the same auction (independently of the day). There is 170 landing operations for which we do not have the landing details, i.e., 22.5 % of the landing operations. In terms of volume landed, these incomplete landings represent 989.1 tons, i.e., 25.5 % of the total volume landed.
# we first isolate incomplete landings
culprits_unmatched <- emff_covid_pefa %>%
filter(is.na(metadata)) %>%
select(external_marking, vessel_name, date, auction, pefa_gear, landings) %>%
mutate (pefa_gear = ifelse(pefa_gear == "SUMWING RFS", "SUMWING", pefa_gear)) # we assume these two type of vessels are similar enough, it will help to get a match for for all incomplete landings.
# we also isolate detailed landings.
culprits_matched <- emff_covid_pefa %>%
filter(!is.na(metadata)) %>%
select(external_marking, vessel_name, date, auction, pefa_gear, weight, metadata, price_mean_total, price_max_total) %>%
mutate (pefa_gear = ifelse(pefa_gear == "SUMWING RFS", "SUMWING", pefa_gear))
# we compare incomplete landings and search for detailed landings in the same auction and with the same type of vessel.
output <- NULL;
for (i in 1:nrow(culprits_unmatched)) {
tmp <- culprits_matched %>%
filter(auction == culprits_unmatched$auction[i] & pefa_gear == culprits_unmatched$pefa_gear[i]) %>%
mutate(price_mean = sum(price_mean_total, na.rm = T)/ sum(weight, na.rm = T),
price_max = sum(price_max_total, na.rm = T)/ sum(weight, na.rm = T)) %>%
select (price_mean, price_max) %>%
distinct ()
output <- rbind(output, tmp) #output contains the estimated prices of fish per kilogram for each incomplete landings.
}
# we merge the incomplete landing records with the respective estimated price of fish per kg
culprits_unmatched <- culprits_unmatched %>%
bind_cols(output)
We finally estimate the turnover for the incomplete landings based on the estimated prices of fish per kg.
emff_covid_pefa <- emff_covid_pefa %>%
filter(!is.na(metadata)) %>%
mutate (price = "Real prices") %>%
bind_rows(emff_covid_pefa %>%
filter(is.na(metadata)) %>%
select(-c("price_mean", "price_max")) %>%
left_join(culprits_unmatched %>%
select (-c("vessel_name", "auction", "pefa_gear")) %>%
mutate (price = "Estimated prices"), by = c("external_marking", "date", "landings")) %>%
mutate (price_mean_total = price_mean * landings,
price_max_total = price_max * landings))
At this stage, after having estimated the turnover for the incomplete landings, we know that 45 dutch vessels landed in PEFA auctions and illegally fished during COVID-19 temporary cessation while they were receiving subsidies from the EMFF.
Based on the mean market price, these vessels have earned 10,579,857 € taking into account both the ‘real’ and ‘estimated’ turnover over the whole temporary cessation period. Based on the mean market price, they have earned 7,533,031 € taking into account only the ‘real’ turnover. Based on the mean market price, they have earned 3,046,826 € taking into account only the ‘estimated’ turnover. Based on the maximum market price, they have earned 11,817,793 € taking into account both the ‘real’ and ‘estimated’ turnover. Based on the max market price, they have earned 8,398,246 € taking into account only the ‘real’ turnover. Based on the max market price, they have earned 3,419,547 € taking into account only the ‘estimated’ turnover.
If we add all the vessels that landed in PEFA and for which there is a suspicion of fraud (since many vessels have an incomplete AIS record and are not able to justify they have respected the “no fishing during 7 consecutive days per week subsidized” rule), we reach 75 vessels.
Based on the mean market price, these vessels have earned 13,933,795 € taking into account both the ‘real’ and ‘estimated’ turnover. Based on the mean market price, they perceived in total 10,483,073 € taking into account only the ‘real’ turnover. Based on the mean market price, they have earned 3,450,721 € taking into account only the ‘estimated’ turnover. Based on the maximum market price, they have earned 15,472,502 € taking into account both the ‘real’ and ‘estimated’ turnover. Based on the max market price, they have earned 11,611,016 € taking into account only the ‘real’ turnover. Based on the max market price, they have earned 3,861,486 € taking into account only the ‘estimated’ turnover.
The following three figures include all the vessels that landed in PEFA and which have not respected the “no fishing during 7 consecutive days per week subsidized” rule as well as those which are not able to justify the respect of the rule because they switched off their AIS.
The following figure combines both the ‘real’ and ‘estimated’ turnover. Each bar was calculated based on the mean market price. The “standard deviation” was calculated based on the maximum price of the market. For some vessels, the total height of the bar is the sum of the ‘real’ (shown in a darker color) and ‘estimated’ (shown in a lighter color) turnover. For these vessels, the total height of the standard deviation is also the sum of the height of the standard deviation for the ‘real’ and ‘estimated’ turnover.
Then, we look at the EMFF subsidies perceived by the culprit vessels.
Then, we look at the total weight of fish landed by the culprit vessels.
The following table shows the name and characteristics of the vessels that did not respect TC rules and sold MSC certified products.
| external_marking | vessel_name | cfr | pefa_gear | length | electric_fishing | MSC_landings | Total_landings | MSC_perc | MSC_landed_while_ais_off | culprit |
|---|---|---|---|---|---|---|---|---|---|---|
| UK5 | VANTAGE | DEU000060400 | SUMWING | 31.65 | NO | 89122 | 114852 | 77.6 | TRUE | |
| UK19 | MARJA NETTY | NLD198200558 | SUMWING | 39.55 | YES | 53884 | 68251 | 78.9 | TRUE | |
| GO38 | DE VERTROUWEN | NLD200202651 | A TANGON | 42.37 | YES | 3214 | 60897 | 5.3 | 3214 | TRUE |
| UK225 | AUKE SENIOR | NLD201901148 | CHALUT | 30.15 | NO | 2813 | 3841 | 73.2 | TRUE | |
| UK200 | HENDRIK SR | NLD201302056 | CHALUT | 22.65 | NO | 934 | 1545 | 60.5 | TRUE | |
| UK56 | JOHANNA MARIA | NLD198300028 | SUMWING | 40.20 | NO | 238 | 1201 | 19.8 | TRUE | |
| UK136 | DRAKKAR | BEL025181998 | A TANGON | 37.81 | NO | 47346 | 56846 | 83.3 | UNKNOWN | |
| ZK87 | PIETERNELLE HELENA | NLD199201655 | CHALUT | 23.88 | NO | 16761 | 17808 | 94.1 | UNKNOWN | |
| UK172 | SURSUM CORDA | NLD199101572 | SUMWING | 41.35 | YES | 15394 | 19310 | 79.7 | UNKNOWN | |
| HD42 | GRIETJE CORNELIA | NLD201872034 | TWIN TRAWLING | 23.65 | NO | 3531 | 27327 | 12.9 | UNKNOWN |
The following figure shows the turnover made by the culprit and suspicious vessels by selling MSC certified products during the temporary cessation period.
The following figure shows the weight of the MSC certified products sold by the culprit and suspicious vessels that landed in PEFA.